<template>
    <div>
        <h4>- 之前异步编程：回调函数、事件监听、发布/订阅、Promise 对象</h4>
        <h4>- Generator 函数</h4>
        <p>协程遇到yield命令就暂停，等到执行权返回，再从暂停的地方继续往后执行</p>
        <h4>- Thunk 函数 是自动执行 Generator 函数的一种方法</h4>
        <p>编译器的“传名调用”实现，往往是将参数放到一个临时函数之中，再将这个临时函数传入函数体。这个临时函数就叫做 Thunk 函数。</p>
        <p>Thunkify 模块 确保回调函数只运行一次</p>
        <p>Thunk 函数并不是 Generator 函数自动执行的唯一方案。因为自动执行的关键是，必须有一种机制，自动控制 Generator 函数的流程，接收和交还程序的执行权。回调函数可以做到这一点，Promise 对象也可以做到这一点。</p>
        <h4>- co模块 也用于 Generator 函数的自动执行</h4>
        <code>var gen = function* () {}; var co = require('co'); co(gen); //只要传入co函数，就会自动执行；co函数返回一个Promise对象，因此可以用then方法添加回调函数。</code>
        <p>使用 co 的前提条件是，Generator 函数的yield命令后面，只能是 Thunk 函数或 Promise 对象。如果数组或对象的成员，全部都是 Promise 对象，也可以使用 co</p>
    </div>
</template>

<script>
export default {
    
}
</script>

<style scoped>

</style>